package com.ctshk.rpc.order.season.service;

import com.ctshk.common.model.TokenUser;
import com.ctshk.rpc.order.season.dto.SeasonOrderPayDTO;
import com.ctshk.rpc.order.season.dto.SeasonOrderTouristDataDTO;
import com.ctshk.rpc.order.season.dto.SeasonProductOrderTrainDTO;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 套票-订单-火车票订单 服务类
 * </p>
 *
 * @author 杨林
 * @since 2021-03-24
 */
public interface ISeasonProductOrderTrainService {
    /* @MethodName: 保存火车票订单信息
     * @Description: TODO
     * @Param:
     * @Return:
     * @Author: 杨林
     * @Date:2021/3/25 9:08
     **/
    void saveTrainProduct(List<SeasonProductOrderTrainDTO> trainList, Long userId, Long id);

    /* @MethodName: 获取火车票 订单信息集合
     * @Description: TODO
     * @Param:
     * @Return:
     * @Author: 杨林
     * @Date:2021/3/30 16:45
     **/
    List<SeasonProductOrderTrainDTO> getOrderTrainList(Long id);

    /* @MethodName: 火车票下供应商预订单
     * @Description: TODO
     * @Param:
     * @Return:
     * @Author: 杨林
     * @Date:2021/4/7 17:53
     **/
    void playSupplierOrder(Long orderId, TokenUser user);


    /* @MethodName: 更改确认状态
     * @Description: TODO
     * @Param:
     * @Return:
     * @Author: 杨林
     * @Date:2021/4/14 10:57
     **/
    void changeAffirmState(Long orderId, Integer isAffirm);

    void changeCancelOrderState(Long orderId, Integer cancelStatus);

    /* @MethodName: 固定 套票 下供 走内部挂账
     * @Description: TODO
     * @Param:
     * @Return:
     * @Author: 杨林
     * @Date:2021/4/21 14:06
     **/
    void playInternalOrder(Long orderId, TokenUser user);

    /* @MethodName: 动态套票 下机票单项单 生成对应的订单号
     * @Description: TODO
     * @Param:
     * @Return:
     * @Author: 杨林
     * @Date:2021/4/13 19:07
     **/
    void playTrainOrder(TokenUser user, List<SeasonOrderPayDTO> payList, List<SeasonOrderTouristDataDTO> touristList, Map<String, Object> map);
}
